/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo.DAL;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.json.JSONObject;
import org.json.JSONArray;

/**
 *
 * @author miguel474
 */
public class CamposNovedad_DAO {

    public CamposNovedad_DAO() {
    }

    //Dado el nombre de un campo, obtiene su id
    public static int getCampoId(String nombre) {
        ConexionBD conexion = new ConexionBD();
        Statement s = null;
        try {
            s = conexion.session.createStatement();
        } catch (SQLException se) {
            System.out.println("Error Insertando Novedad!");
            return -1;
        }
        String query = "select id_campo_novedad from campo_novedad where nombre = '" + nombre + "'";
        System.out.println("\n\tQuery: " + query + "\n");
        System.out.println(query);
        try {
            ResultSet rs = s.executeQuery(query);
            int clave = -1;
            while (rs.next()) {
                clave = rs.getInt(1);
            }
            conexion.cerrarConexion();
            return clave;
        } catch (SQLException se) {
            System.out.println("Error en la consulta");
            conexion.cerrarConexion();
            return -1;
        }
    }

    public static JSONObject consultarCamposDinamicos(String id, String tipo) {
        ConexionBD conex = new ConexionBD();
        JSONObject infoCampos = new JSONObject();
        try {
            Statement st = (Statement) conex.session.createStatement();
            String query;
            if (tipo.equals("generica")) {
                query = "select c.nombre, p.obligatorio from campo_novedad c, pertenecei p where c.id_campo_novedad = p.id_campo_novedad and p.id_novedad_gen = " + id;
            } else {
                query = "select c.nombre, p.obligatorio from campo_novedad c, perteneceii p where c.id_campo_novedad = p.id_campo_novedad and p.id_novedad_esp = " + id;
            }
            ResultSet rs = st.executeQuery(query);
            int j = 0;
            while (rs.next()) {
                JSONObject infoCampo = new JSONObject();
                infoCampo.put("nombre_campo", rs.getString(1));
                infoCampo.put("obligatorio", rs.getString(2));
                infoCampos.put("" + j++, infoCampo);
            }
        } catch (Exception e) {
        } finally {
            conex.cerrarConexion();
        }
        return infoCampos;
    }

    // BUENA!
    public static JSONArray fetchCampos(String gen, String esp) {
        JSONArray nombresCampos = new JSONArray();
        ConexionBD conexion = new ConexionBD();
        PreparedStatement s = null;
        String query = "select nombre,longitud,metodo_validacion,obligatorio from campo_novedad_generica where id_novedad_generica=?";
        int i = 0;
        try {
            s = conexion.session.prepareStatement(query);
            s.setInt(1, Integer.parseInt(gen));
            ResultSet rs = s.executeQuery();

            while (rs.next()) {
                JSONObject nombreCampo = new JSONObject();
                nombreCampo.put("nombre_campo", rs.getString(1));
                nombreCampo.put("longitud", rs.getInt(2));
                nombreCampo.put("validacion_campo", rs.getString(3));
                nombreCampo.put("obligatorio_campo", rs.getBoolean(4));
                nombresCampos.put(i++, nombreCampo);
            }
            if (Integer.parseInt(esp) > 0) {
                query = "select nombre,longitud,metodo_validacion,obligatorio from campo_novedad_especifica where id_novedad_especifica=?";
                s = conexion.session.prepareStatement(query);
                s.setInt(1, Integer.parseInt(esp));
                rs = s.executeQuery();
                while (rs.next()) {
                    JSONObject nombreCampo = new JSONObject();
                    nombreCampo.put("nombre_campo", rs.getString(1));
                    nombreCampo.put("longitud", rs.getInt(2));
                    nombreCampo.put("validacion_campo", rs.getInt(3));
                    nombreCampo.put("obligatorio_campo", rs.getBoolean(4));
                    nombresCampos.put(i++, nombreCampo);
                }
            }


        } catch (Exception e) {
        } finally {
            conexion.cerrarConexion();
        }
        return nombresCampos;
    }

    // BUENA!
    public static JSONArray camposEspecifica(String gen, String esp) {
        try {
            JSONArray nombresCampos = new JSONArray();
            ConexionBD conexion = new ConexionBD();
            PreparedStatement s = null;
            String query = "select nombre,longitud,metodo_validacion,obligatorio from campo_novedad_especifica where id_novedad_especifica=?";
            s = conexion.session.prepareStatement(query);
            s.setInt(1, Integer.parseInt(esp));
            int i = 0;
            ResultSet rs = s.executeQuery();
            rs = s.executeQuery();
            while (rs.next()) {
                JSONObject nombreCampo = new JSONObject();
                nombreCampo.put("nombre_campo", rs.getString(1));
                nombreCampo.put("longitud", rs.getInt(2));
                nombreCampo.put("validacion_campo", rs.getInt(3));
                nombreCampo.put("obligatorio_campo", rs.getBoolean(4));
                nombresCampos.put(i++, nombreCampo);
            }
            return nombresCampos;
        } catch (SQLException ex) {
            System.out.println("Error consultando y retornando los campos de la novedad especifica");
            return null;
        }
    }
}
